package agenda.modelo;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;

public class MainJPA {

	static EntityManager em;

	public static void main(String[] args) {

		EntityManagerFactory emf = Persistence
				.createEntityManagerFactory("UnidadAgenda");
		em = emf.createEntityManager();

//		agregaContacto();
//
//		agregaConDomicilio();
//
//		agregaConTelefonos();
//
//		consultaConTelefono(3);

		consultaTodos();
		
		consultaNombre();
		
		em.close();
		emf.close();

	}

	public static void consultaConTelefono(int id) {
		Contacto c = em.find(Contacto.class, id);

		System.out.println(c.getIdContacto());
		System.out.println(c.getNombre());
		System.out.println(c.getDom().getVia());
		System.out.println(c.getDom().getNumero());
		String[] tel = c.getTelefono();

		for (int i = 0; i < tel.length; i++) {
			System.out.println(tel[i]);
		}

	}
	
	public static void consultaTodos (){
		Query q = em.createQuery("select c from Contacto c");
		List<Contacto> l = (List<Contacto>)q.getResultList();
		
		for (Contacto contacto : l) {
			System.out.println(contacto.getNombre());
		}
	}

	public static void consultaNombre (){
		Query q = em.createQuery("select c from Contacto c WHERE c.nombre LIKE 'ceci%'");
		List<Contacto> l = (List<Contacto>)q.getResultList();
		
		for (Contacto contacto : l) {
			System.out.println(contacto.getNombre());
		}
	}

	public static void agregaContacto() {

		Contacto c = new Contacto();
		c.setNombre("Pablo");
		c.setApellidos("Lopez");
		c.setApodo("Sin mas datos");

		// em.beginTransaction();
		em.getTransaction().begin();

		em.persist(c);

		em.getTransaction().commit();

	}

	public static void agregaConDomicilio() {

		Contacto c = new Contacto();
		c.setNombre("Antonio");
		c.setApellidos("Marcos");
		c.setApodo("Solo con Domicilio");

		Domicilio d = new Domicilio();
		d.setCiudad("Alcobendas");
		d.setCodigoPostal("29000");
		d.setNumero(69);
		d.setPiso(5);
		d.setProvincia("Madrid");
		d.setPuerta("A");
		d.setTipoVia("Avenida");
		d.setVia("San Martin");

		c.setDom(d);

		em.getTransaction().begin();

		em.persist(c);

		em.getTransaction().commit();

	}

	public static void agregaConTelefonos() {

		Contacto c = new Contacto();
		c.setNombre("Cecilia");
		c.setApellidos("Bontempo");
		c.setApodo("Domicilio y Telefonos");

		Domicilio d = new Domicilio();
		d.setCiudad("Meco");
		d.setCodigoPostal("28800");
		d.setNumero(16);
		d.setPiso(0);
		d.setProvincia("Madrid");
		d.setPuerta("");
		d.setTipoVia("calle");
		d.setVia("Holanda");

		c.setDom(d);

		c.setTelefono(new String[] { "680559561", "918307918" });

		em.getTransaction().begin();

		em.persist(c);

		em.getTransaction().commit();

		// session.beginTransaction();
		// session.delete(pro);
		// session.update(pro);

		// session.getTransaction().commit();
	}
}
